﻿using System;
using System.Collections.Generic;
using System.Linq;
using AdministracionCooperativa.entidades;
using System.Text;

namespace AdministracionCooperativa.Controlador
{
    public class ControladorSocios
    {
        private static catnom datosSocios;

        public static catnom DatosSocios
        {
            get { return datosSocios; }
        }
        public static catpro GetSocioById(Int32 idSocio)
        {
            using (combisEntities bd = new combisEntities())
            {
                var resultado = bd.catpro.SingleOrDefault(c => c.IDPRO == idSocio);
                EstableceDatosSocio(resultado.CATNOM_CVEELEC.ToString());
                return resultado;

            }
        }

        public static void EstableceDatosSocio(string seguroSocial)
        {
            using (combisEntities bd = new combisEntities())
            {
                datosSocios = bd.catnom.SingleOrDefault(c => c.CVEELEC == seguroSocial);
            }
        }
        public static List<KeyValuePair<long, string>> GetAllNombreAndSegSocSocios()
        {
            using (combisEntities bd = new combisEntities())
            {
                var listaSegurosSociales = bd.catpro.Select(e => e.CATNOM_CVEELEC).ToList();
                var nombresCompletosConClave = ObtenerSegSocNombreCompleto(listaSegurosSociales);
                var resultado = new List<KeyValuePair<long,string>>();
                foreach (var item in  bd.catpro.ToList())
                {
                    var i = nombresCompletosConClave.First(c => c.Key == item.CATNOM_CVEELEC);
                    if (i.Key == item.CATNOM_CVEELEC)
                        resultado.Add(new KeyValuePair<long,string>(item.IDPRO,i.Value));
                }
                return resultado.OrderByDescending(c=>c.Value).ToList();
            }

        }
        private static List<KeyValuePair<string, string>> ObtenerSegSocNombreCompleto(List<string> segSociales)
        {
            using (combisEntities bd = new combisEntities())
            {
                var resultado = bd.catnom.Where((e) => (segSociales.Contains(e.CVEELEC))).ToList();
                var diccionario = new Dictionary<string, string>();
                foreach (var item in resultado)
                {
                    diccionario.Add(item.CVEELEC, item.NOMBRE + " " + item.PATERNO + " " + item.MATERNO);
                }
                return diccionario.ToList();
            }
        }
    }
}
